package com.ruoyi.platform.system.dept.dao;

import com.ruoyi.platform.system.dept.pojo.DeptDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 部门机构信息表
 *
 * @author lcf
 * @since 2021-12-24 11:16:57
 */
@Mapper
@Repository
public interface DeptDAO {
    /**
     * 插入数据 全部插入
     *
     * @param record {@link DeptDO}
     * @return 影响行数
     **/
    int insertDept(DeptDO record);

    /**
     * 插入数据 部分插入
     *
     * @param record {@link DeptDO}
     * @return 影响行数
     **/
    int insertDeptSelective(DeptDO record);

    /**
     * 插入数据 批量插入
     *
     * @param recordList {@link List<DeptDO>}
     * @return 影响行数
     **/
    int insertDeptBatch(@Param("list") List<DeptDO> recordList);

    /**
     * 批量部分插入
     *
     * @param recordList {@link List<DeptDO>}
     * @return 影响行数
     **/
    int insertDeptSelectiveBatch(@Param("list") List<DeptDO> recordList);

    /**
     * 更新数据 全部更新
     *
     * @param record {@link DeptDO}
     * @return 影响行数
     **/
    int updateDeptByPrimaryKey(DeptDO record);

    /**
     * 更新数据 部分更新
     *
     * @param record {@link DeptDO}
     * @return 影响行数
     **/
    int updateDeptByPrimaryKeySelective(DeptDO record);

    /**
     * 通过主键删除该数据
     *
     * @param deptId 主键Number
     * @return 影响行数
     **/
    int delDeptByPrimaryKey(@Param("deptId") Long deptId);

    /**
     * 通过主键查询数据
     *
     * @param deptId 主键Number
     * @return {@link DeptDO}
     **/
    DeptDO selectDeptByPrimaryKey(@Param("deptId") Long deptId);

    /**
     * 通过主键列表查询数据
     *
     * @param deptIdList {@link List<Long>} 主键Number列表
     * @return {@link List<DeptDO>}
     **/
    List<DeptDO> selectDeptByPrimaryKeyList(@Param("list") List<Long> deptIdList);

    /**
     * 通过DO中不为空的数据组合成联合条件 查询
     *
     * @param query {@link DeptDO}
     * @return {@link List<DeptDO>}
     **/
    List<DeptDO> selectByDept(DeptDO query);

    /**
     * 通过DO中不为空的数据组合成联合条件 查询数量
     *
     * @param query {@link DeptDO}
     * @return 统计行数
     **/
    int selectDeptCount(DeptDO query);
}